package defaults;

/**
 * 接口默认方法
 * 默认方法作用：向前兼容，旧版本
 * 多重继承的冲突：
 *
 * @author <a href="mailto:sjj@jianzhimao.com">mojo</a>
 * copyright (C), 2013-2022, 广州九尾信息科技有限公司
 * @date 2022/3/22 17:43
 */
public class DefaultDemo {
    public static void main(String[] args) {
        sub sub = new sub();
        sub.aa();
        //重载方法，参数都为单方法接口时的lambda表达式
        sub.repet((A) () -> {
        });
        sub.repet((B) () -> {
        });
    }
}

interface A {
    default void test() {
        System.out.println("A接口默认方法");
    }

    void aa();
}

interface B {
    void aa();

    default void test() {
        System.out.println("B接口默认方法");
    }
}

class sub implements A, B {
    @Override
    public void test() {
        //A,B方法签名相同的default方法使用，指定使用A
        A.super.test();
        B.super.test();
        A a = () -> System.out.println(">>>a接口");
    }

    public void repet(A a) {
        a.test();
    }

    public void repet(B b) {
        b.test();
    }

    @Override
    public void aa() {

    }
}